#!/bin/bash
# 脚本功能：自动备份指定目录并打包压缩，记录备份日志
# 作者：kelsey
# 日期：2025-11-24

# 接收用户输入的源目录和备份目录
echo "请输入需要备份的源目录路径："
read -r SOURCE_DIR  # -r选项避免输入中的特殊字符被转义

echo "请输入备份文件保存的目标目录路径："
read -r BACKUP_DIR

# 判断备份目录是否存在，不存在则创建
if [ ! -d "$BACKUP_DIR" ]; then
    echo "备份目录 $BACKUP_DIR 不存在，正在创建..."
    mkdir -p "$BACKUP_DIR"
    # 检查目录创建结果
    if [ $? -eq 0 ]; then
        echo "备份目录 $BACKUP_DIR 创建成功"
    else
        echo "错误：备份目录 $BACKUP_DIR 创建失败，请检查权限"
        exit 1  # 退出脚本，1表示执行失败
    fi
fi

# 定义备份文件名（包含时间戳，格式：backup_20241001_153020.tar.gz）
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")  # $(date)获取系统时间，+指定格式
BACKUP_FILE="$BACKUP_DIR/backup_$TIMESTAMP.tar.gz"

# 定义日志文件路径（与备份文件同目录）
LOG_FILE="$BACKUP_DIR/backup_log.txt"

# 执行备份操作（tar打包压缩），将过程信息重定向至/dev/null（不显示）
echo "正在执行备份：从 $SOURCE_DIR 备份至 $BACKUP_FILE..."
tar -zcf "$BACKUP_FILE" "$SOURCE_DIR" > /dev/null 2>&1

# 判断备份是否成功（$?为0表示tar命令执行成功）
if [ $? -eq 0 ]; then
    BACKUP_RESULT="成功"
    echo "备份完成！备份文件已保存至：$BACKUP_FILE"
else
    BACKUP_RESULT="失败"
    echo "错误：备份失败，请检查源目录是否存在且有权限访问"
fi

# 记录备份日志（时间格式：YYYY-MM-DD HH:MM:SS）
LOG_TIME=$(date +"%Y-%m-%d %H:%M:%S")
echo "[$LOG_TIME] - 源目录：$SOURCE_DIR | 备份文件：$BACKUP_FILE | 备份结果：$BACKUP_RESULT" >> "$LOG_FILE"

echo "备份日志已更新至：$LOG_FILE"
exit 0  # 脚本正常退出
